﻿/*****************************************************************//**
  * @file   VAOneXMLAdaptorPowerSources.h
  * @brief  VAOne读写能量源适配器
  *
  * @author lilongyuan (lilongyuan@diso.cn)
  * @date   2025-01-17
  *********************************************************************/
#ifndef VAONEXMLADAPTORPOWERSOURCES_H
#define VAONEXMLADAPTORPOWERSOURCES_H

#include "FITKAbstractVAOneXMLAdaptor.h"

namespace IO
{
    /**
     * @brief   XML读写适配器，用于读写能量源数据
     * @author  lilongyuan (lilongyuan@diso.cn)
     * @date    2025-01-17
     */
    class FITKVAOneXMLIOAPI VAOneXMLAdaptorPowerSources : public FITKAbstractVAOneXMLAdaptor
    {
        FITKCLASS(IO, VAOneXMLAdaptorPowerSources);
    public:
        /**
         * @brief   构造函数
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-17
         */
        explicit VAOneXMLAdaptorPowerSources() = default;

        /**
         * @brief   析构函数
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-17
         */
        ~VAOneXMLAdaptorPowerSources() = default;

        /**
         * @brief   适配器读数据
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-17
         */
        bool adaptR() override;

        /**
         * @brief   适配器写数据
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-17
         */
        bool adaptW() override;

    private:

        /**
         * @brief   读取点力的载荷数据
         * @param   node PointForce节点
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-17
         */
        bool readPointForce(rapidxml::xml_node<char>* node);

        /**
         * @brief   读取载荷的FE子系统功率源数据
         * @param   node FEUDPower节点
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-17
         */
        bool readFEUDPower(rapidxml::xml_node<char>* node);

        /**
         * @brief   读取载荷的SEA声腔功率源数据
         * @param   node AcousticUDPower节点
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-17
         */
        bool readAcousticUDPower(rapidxml::xml_node<char>* node);

        /**
         * @brief   读取载荷的SEA梁功率源数据
         * @param   node BeamUDPower节点
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-17
         */
        bool readBeamUDPower(rapidxml::xml_node<char>* node);

        /**
         * @brief   读取载荷的SEA板功率源数据
         * @param   node PlateUDPower节点
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-17
         */
        bool readPlateUDPower(rapidxml::xml_node<char>* node);

        /**
         * @brief   读取单极子载荷数据
         * @param   node PlateUDPower节点
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-18
         */
        bool readMonopole(rapidxml::xml_node<char>* node);

        /**
         * @brief   写入点力的载荷数据
         * @param   node PointForce节点，manager载荷管理器
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-18
         */
        bool writePointForce(rapidxml::xml_node<char>* node);

        /**
         * @brief   写入载荷的FE子系统功率源数据
         * @param   node FEUDPower节点，manager载荷管理器
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-18
         */
        bool writeFEUDPower(rapidxml::xml_node<char>* node);

        /**
         * @brief   写入载荷的SEA声腔功率源数据
         * @param   node AcousticUDPower节点，manager载荷管理器
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-18
         */
        bool writeAcousticUDPower(rapidxml::xml_node<char>* node);

        /**
         * @brief   写入载荷的SEA梁功率源数据
         * @param   node BeamUDPower节点，manager载荷管理器
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-18
         */
        bool writeBeamUDPower(rapidxml::xml_node<char>* node);

        /**
         * @brief   写入载荷的SEA板功率源数据
         * @param   node PlateUDPower节点，manager载荷管理器
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-18
         */
        bool writePlateUDPower(rapidxml::xml_node<char>* node);

        /**
         * @brief   写入单极子载荷数据
         * @param   node PlateUDPower节点，manager载荷管理器
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-18
         */
        bool writeMonopole(rapidxml::xml_node<char>* node);
    };
    Register2FITKIOAdaptorFactory(VAOneXML, PowerSources, VAOneXMLAdaptorPowerSources)
}

#endif // VAONEXMLADAPTORPOWERSOURCES_H

